import Request from '@/tuniao-ui/libs/luch-request/index.js'
import store from '@/store/index.js'

import {
	apiBaseUrl
} from "./baseUrl.js";

const http = new Request()
http.setConfig((config) => {
	config.baseURL = apiBaseUrl
	config.header = {
		...config.header
		// a: 1, // 演示
		// b: 2 // 演示
	}
	config.timeout = 8000
	return config
})


http.interceptors.request.use((config) => {
	/* 请求之前拦截器。可以使用async await 做异步操作 */
	config.header = {
		...config.header,
		token: store.state.vuex_user ? store.state.vuex_user.token : ''
	}
	/*
 if (!token) { // 如果token不存在，return Promise.reject(config) 会取消本次请求
   return Promise.reject(config)
 }
 */
	if (!config.custom.loadinHide) {
		uni.showLoading({
			title: '加载中...'
		})
	}

	return config
}, (config) => {
	return Promise.reject(config)
})


http.interceptors.response.use(async (response) => {
	uni.hideLoading()
	if (response.data.code === 0) {
		return response.data
	}
	/* 请求之后拦截器。可以使用async await 做异步操作  */
	else if (response.data.code === 401 || response.data.code === 20008) {
		uni.clearStorage()
		uni.showModal({
			title: '提示',
			content: response.data.msg,
			confirmText: '登录',
			success: function(res) {
				if (res.confirm) {
					uni.navigateTo({
						url: "/pageA/login/login",
						animationType: 'zoom-fade-out',
						animationDuration: 300
					})
				} else if (res.cancel) {}
			}

		})

		return Promise.reject(response)
	}
	uni.showToast({
		title: response.data.msg,
		icon: 'none',
		duration: 2000
	})
	return Promise.reject(response)
}, (response) => { // 请求错误做点什么。可以使用async await 做异步操作
	uni.showToast({
		title: '请求超时',
		icon: 'error'
	})
	return Promise.reject(response)
})

export {
	http
}